package com.ruoyi.merchant.domain.vo;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

/**
 * 优惠券VO
 * 
 * @author xperia
 */
@Data
public class CouponVO {

    /** 优惠券ID */
    private String couponId;

    /** 优惠券编码 */
    private String couponCode;

    /** 优惠券名称 */
    private String couponName;

    /** 优惠券类型：1-满减券，2-折扣券，3-免费券，4-新用户券 */
    private Integer couponType;

    /** 优惠券类型名称 */
    private String couponTypeName;

    /** 商家ID */
    private String merchantId;

    /** 商家名称 */
    private String merchantName;

    /** 优惠金额 */
    private BigDecimal discountAmount;

    /** 折扣率 */
    private BigDecimal discountRate;

    /** 最低订单金额 */
    private BigDecimal minOrderAmount;

    /** 最高优惠金额 */
    private BigDecimal maxDiscountAmount;

    /** 发放总数量 */
    private Integer totalQuantity;

    /** 已使用数量 */
    private Integer usedQuantity;

    /** 剩余数量 */
    private Integer remainingQuantity;

    /** 每用户限领数量 */
    private Integer perUserLimit;

    /** 有效期开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date validStartTime;

    /** 有效期结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date validEndTime;

    /** 领取开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date receiveStartTime;

    /** 领取结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date receiveEndTime;

    /** 适用范围：1-全部商品，2-指定商品，3-指定分类 */
    private Integer applicableScope;

    /** 适用范围名称 */
    private String applicableScopeName;

    /** 范围ID列表 */
    private String scopeIds;

    /** 优惠券描述 */
    private String description;

    /** 使用规则 */
    private String usageRules;

    /** 状态：0-待审核，1-审核通过，2-审核拒绝，3-已发布，4-已暂停，5-已过期 */
    private Integer status;

    /** 状态名称 */
    private String statusName;

    /** 审核状态：0-待审核，1-审核通过，2-审核拒绝 */
    private Integer approvalStatus;

    /** 审核状态名称 */
    private String approvalStatusName;

    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date approvalAt;

    /** 审核备注 */
    private String approvalRemark;

    /** 拒绝原因 */
    private String rejectReason;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;
}

